home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9410_2.lha / Haufenweise / Programme / pooltest.c < prev    next >
C/C++ Source or Header  |  1994-07-15  |  1KB  |  53 lines

  1. #include <clib/dos_protos.h>
  2. #include <exec/memory.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6. #define BLOCKGROESSE  100000  // 'großes' Stück
  7. #define BLOCKTHRES     80000  // ab 80000 neues Stück
  8. #define BLOCKMAXSIZE  120000  // maximale Testgröße
  9. #define BLOCKANZAHL       20  // Allozierungen pro Pool
  10.  
  11. void *CreatePool13(ULONG Flags,ULONG RegionSize, ULONG NewSize);
  12. void DeletePool13(APTR MyPool);
  13. APTR AllocPooled13(void *MyPool,ULONG Size);
  14. void FreePooled13(void *MyPool, APTR memaddr);
  15.  
  16. __far APTR memblocks[BLOCKANZAHL];
  17.  
  18. int main(int argc, char *agrv[])
  19. {
  20.    APTR mypool;
  21.    register int i = 0, j = 0, k = 1000;
  22.  
  23.    if (mypool = CreatePool13(MEMF_PUBLIC,BLOCKGROESSE,
  24.                              BLOCKTHRES))
  25.    {  while (k-- > 0)
  26.       {  if ((k%100) == 0) // alle 100 Durchläufe
  27.          { printf("k ist %ld, j ist %6ld\r",k,j);
  28.            fflush(stdout); // eine Ausgabe
  29.          }
  30.          for (i=0; i < BLOCKANZAHL;)
  31.          {
  32.             j = 20 + (rand() % BLOCKMAXSIZE);
  33.             if (!(memblocks[i++] = AllocPooled13(mypool,j)))
  34.             {  break; }
  35.          }
  36.  
  37.          /* diese for-Schleife besser weglassen !! */
  38.          for (i=0; i < BLOCKANZAHL;i++)
  39.          {
  40.             if (memblocks[i])
  41.             {  FreePooled13(mypool,memblocks[i]); 
  42.                memblocks[i] = 0L;
  43.             }
  44.             else
  45.             {  break; }
  46.          }
  47.       }
  48.       DeletePool13(mypool); // Pool freigeben
  49.    }
  50.    return 0L;
  51. }
  52.  
  53.